{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ca003592",
   "metadata": {},
   "source": [
    "# 重要参数采样"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91427c98",
   "metadata": {},
   "source": [
    "- 重要参数采样指的是我们在进行训练的时候拿到一轮数据进行多次训练 而不是训练一次就丢弃也不是全部将数据一次性进行训练好\n",
    "- 那么 训练一次数据后他所产生的决策就是旧的决策我们记作A 第二次训练产生的决策就是B\n",
    "- 比如我们训练出A在某个状态下做出某个决策的概率是30%同时也会采纳这个决策并得到10分 接下来B做出的决策是40%并采纳会得到(40%/30%)*10的分数\n",
    "- 其中40%/30%就是他的重要性权重"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c864d7f",
   "metadata": {},
   "source": [
    "举个例子:\n",
    "- 比如厨房炒菜的师傅 我们做一道菜 师傅向这道菜放两勺盐的概率是60% 得分是10\n",
    "- 师傅训练出来的徒弟炒菜 徒弟可能会想出一些更加新颖的办法\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92148510",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f18e8e54",
   "metadata": {},
   "source": [
    "<p style=\"color:red\">\n",
    "注意:重要参数权重是指概率分布的比例 徒弟可能做出的决策是一个概率分布 比如我们在七层油温的环境下 师傅放两勺辣椒的概率是60%\n",
    "</p>\n",
    "\n",
    "<p style=\"color:green\">而徒弟呢</p>\n",
    "<ul style=\"color:green\">\n",
    "    <li>放盐的概率是70%</li>\n",
    "    <li>放两勺辣椒概率是30%</li>\n",
    "</ul>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "857ea89c",
   "metadata": {},
   "source": [
    "- 最终我们可以看出 徒弟跟师傅做的一样的操作的概率是30% 师傅是60%\n",
    "- (30%)/(60%)=0.5 0.5说明徒弟能做出和师傅一样操作的倾向性只有0.5 最终徒弟也只能拿到5分这个低分\n",
    "##### 那么当我们在这个环境下做出低分的操作后会做出怎样的决策呢\n",
    "##### 有两种可能\n",
    "- 1 我们直接加盐打破之前老师傅做菜的经验 可能会得到比十分更高的分数 此时就会继续提高加盐的权重由70变成80\n",
    "- 2 加盐后也可能得到一个负分数 把菜烧坏了 此时就会降低加盐的权重而提高加两勺辣椒的权重\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff4c5fe9",
   "metadata": {},
   "source": [
    "### 关于clip的说明"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07b82e78",
   "metadata": {},
   "source": [
    "- 因为重要性参数是不停地迭代的 \n",
    "- 比如老师傅加两勺辣椒初始概率是60% 我们设置clip的范围是【0.8,1.2】也就是48%-72%\n",
    "- 如果徒弟依旧顺着老师傅的成功的经验继续下去 那么60%会一直叠加但是不会超过72%\n",
    "- 反之 如果徒弟对于加两勺辣椒不太喜欢只将他的概率设为1% 那么这个概率远远小于48%那么clip就会强制的将加两勺辣椒的概率设置为48%\n",
    "- 这样做的目的是为了如果有新的决策并且分数比较高，我们不会一股脑的全部投入到这个决策中而是一点点的去尝试 防止模型训练损坏"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
